package cn.edu.fzu.delivery.mapper;

import cn.edu.fzu.delivery.domain.entity.SysUser;
import cn.edu.fzu.delivery.domain.enums.SexEnum;
import cn.edu.fzu.delivery.domain.enums.UserStatusEnum;
import cn.edu.fzu.delivery.domain.enums.UserTypeEnum;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface SysUserMapper {

    /** 通过条件查询系统用户列表 **/
    List<SysUser> list(@Param("networkId") Long networkId, @Param("name") String name, @Param("type") UserTypeEnum type,
                       @Param("status") UserStatusEnum status, @Param("phone") String phone,
                       @Param("email") String email);


    /** 通过邮箱获取具体某个用户 **/
    SysUser getByEmail(@Param("email") String email);


    /** 通过手机号获取具体某个用户 **/
    SysUser getByPhone(@Param("phone") String phone);


    /** 通过id获取具体某个用户 **/
    SysUser getById(@Param("id") Long id);


    /** 通过钉钉id查询人员 **/
    SysUser getByDingId(@Param("dingId") String dingId);


    /**
     * 更新系统用户信息
     */
    Integer update(@Param("id") Long id, @Param("email") String email, @Param("password") String password,
                   @Param("name") String name, @Param("sex") SexEnum sex, @Param("birth") Date birth,
                   @Param("phone") String phone, @Param("address") String address, @Param("imageUrl") String imageUrl,
                   @Param("type") UserTypeEnum type, @Param("status") UserStatusEnum status,
                   @Param("netWorkId") Long netWorkId);


    /**
     * 添加系统用户
     */
    Integer add(@Param("email") String email, @Param("password") String password, @Param("name") String name,
                @Param("sex") SexEnum sex, @Param("birth") Date birth, @Param("phone") String phone,
                @Param("address") String address, @Param("type") UserTypeEnum type,
                @Param("status") UserStatusEnum status, @Param("networkId") Long networkId);


    /**
     * 更新系统用户状态
     */
    Integer updateStatus(@Param("id") Long id, @Param("status") UserStatusEnum status);


    /** 更新系统的钉钉id **/
    void updateDingId(@Param("email") String email, @Param("dingId") String dingId);
}
